home *** CD-ROM | disk | FTP | other *** search
- #include "GifScan.h"
-
- #define kSavePromptResString 131
- #define kDefaultNameString 132
- #define kDefaultCreator 'ttxt'
-
- // I was going to use IC Config here, really, but it wouldn't get a
- // default textfile creator for me
-
- Boolean HandleTextFileSave(void)
- {
- StandardFileReply reply;
- long feature;
- short fileRef;
- OSErr err;
- long byteCount;
- char *bufPtr;
- Boolean cancel = false;
- StringHandle savePrompt, defFileName;
- TEHandle te;
-
- // Check for standard file stuff and report error if not present
- err = Gestalt(gestaltStandardFileAttr, &feature);
- if (err != noErr) return(false);
-
- if (feature & (1 << gestaltStandardFile58) )
- {
- savePrompt = GetString(kSavePromptResString);
- defFileName = GetString(kDefaultNameString);
- HLock((Handle)savePrompt);
- HLock((Handle)defFileName);
- StandardPutFile(*savePrompt, *defFileName, &reply);
- HUnlock((Handle)savePrompt);
- HUnlock((Handle)defFileName);
- }
- else
- return(false);
-
- err = Gestalt(gestaltFSAttr, &feature);
- if (err != noErr) return(false);
-
- if ( !(feature & (1 << gestaltHasFSSpecCalls)) ) return(false);
-
- if (reply.sfGood)
- {
- if ( reply.sfReplacing )
- {
- err = FSpDelete(&reply.sfFile);
- if ( err != noErr) return(false);
- }
-
- err = FSpCreate( &reply.sfFile, kDefaultCreator, 'TEXT', reply.sfScript);
- if ( err != noErr) SysBeep(20);
-
- err = FSpOpenDF( &reply.sfFile, fsWrPerm, &fileRef);
- if ( err != noErr) SysBeep(20);
-
- err = SetFPos(fileRef, fsFromStart, 0);
- if ( err != noErr) SysBeep(20);
-
- te = ((DocumentPeek)gOutWindow)->docTE;
- byteCount = (*te)->teLength;
- bufPtr = *((*te)->hText);
-
- err = FSWrite(fileRef, &byteCount, bufPtr);
- if ( err != noErr) SysBeep(20);
-
- err = FSClose(fileRef);
- if (err != noErr) SysBeep(20);
-
- return(true);
- }
- else
- {
- return(cancel);
- }
- }